/**
 * uView已经为用户考虑好了所有的情况，并详细指导您如何在外部JS中引用vuex变量以及Vue的this实例等。
   建议在根目录下新建/common/http.interceptor.js文件，也即创建common目录(如果没有的话)，再创建http.interceptor.js文件，将拦截器相关代码写在里面。
 */
const install = (Vue, vm) => {
	// 此为自定义配置参数，具体参数见上方说明
	Vue.prototype.$u.http.setConfig({
		/* 设置全局配置 */
		/*baseUrl: 'http://127.0.0.1:8080',*/
		/*baseUrl : 'http://36.111.170.25:8080,'*/
		baseUrl: 'https://account-book-front.1900shop.online', //请求的本域名
		// 设置为json，返回后会对数据进行一次JSON.parse()
		dataType: 'json',
		showLoading: true, // 是否显示请求中的loading
		loadingText: '请求中...', // 请求loading中的文字提示
		loadingTime: 800, // 在此时间内，请求还没回来的话，就显示加载中动画，单位ms
		originalData: true, // 是否在拦截器中返回服务端的原始数据
		loadingMask: true, // 展示loading的时候，是否给一个透明的蒙层，防止触摸穿透
		// 配置请求头信息
		header: {
			'content-type': 'application/json;charset=UTF-8'
		},
	});

	// 请求拦截部分，如配置，每次请求前都会执行，见上方说明
	Vue.prototype.$u.http.interceptor.request = (config) => {
		// config.header.token = token;
		config.header.Authorization = vm.os_token // 每个请求都带了token  如果有需要可以筛选部分请求notoken

		// 可以对某个url进行特别处理，此url参数为this.$u.get(url)中的url值
		if (config.url == '/api/user/login') {
			config.header.noToken = true;
		}
		// 最后需要将config进行return
		console.log("请求参数：" + JSON.stringify(config))
		return config;
	}

	// 响应拦截，如配置，每次请求结束都会执行本方法
	Vue.prototype.$u.http.interceptor.response = (res) => {
		// console.log(statusCode);
		console.log("请求响应：" + JSON.stringify(res))
		if (res.data.status == 200) {
			return res.data.data
		} else if ((res.data.status == 500 && res.data.message.includes("账本"))) {
			uni.switchTab({
				url: '/pages/app/index'
			});
		} else if ((res.data.status == 201)) {
			uni.switchTab({
				url: '/pages/user/index'
			});
		} else if ((res.data.status == 403)) {
			uni.switchTab({
				url: '/pages/user/index'
			});
		} else {
			uni.reLaunch({
				url: '/pages/user/login'
			});
		}
	}
}

export default {
	install
}